package hn.sigit.logic.workflow.transaction;

import hn.sigit.logic.general.ResourceBundleHelper;
import hn.sigit.logic.workflow.transaction.impl.DataEntryMergeHelper;
import hn.sigit.logic.workflow.transaction.impl.DataEntryParcelDataHelper;
import hn.sigit.logic.workflow.transaction.impl.DataEntryRRRHelper;
import hn.sigit.logic.workflow.transaction.impl.DataEntrySplitHelper;
import hn.sigit.logic.workflow.transaction.impl.DataEntryUndoHelper;
import hn.sigit.model.commons.IParcel;
import hn.sigit.model.hnd.ladmshadow.Parcel;
import hn.sigit.model.hnd.ladmshadow.Property;

import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remove;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.remoting.WebRemote;

@Local
public interface DataEntryHelper {
	String NAME = "dataEntryHelper";
	

	long getPresentationId();

	TransactionHelper getTransactionHelper();

	DataEntryRRRHelper getRrrHelper();

	DataEntrySplitHelper getSplitHelper();

	DataEntryMergeHelper getMergeHelper();

	DataEntryParcelDataHelper getParcelDataHelper();

	DataEntryUndoHelper getUndoHelper();

	ResourceBundleHelper getResBundle();

	@WebRemote
	String getSplitBorderWKT();

	@WebRemote
	String getRequestedParcelsGML();

	@WebRemote
	String getNeighborParcelsGML();

	String getMapScript();

	long getSelectedLadmBaUnitId();

	long getSelectedBaUnitId();

	IParcel getSelectedParcel();

	void setSelectedParcel(IParcel selectedParcel);

	IParcel getZoomedInParcel();

	void setZoomedInParcel(IParcel zoomedInParcel);

	Double getEnvelopeLeft();

	Double getEnvelopeBottom();

	Double getEnvelopeRight();

	Double getEnvelopeTop();

	List<Property> getRequestedProperties();

	void setRequestedProperties(List<Property> requestedProperties);

	List<Property> getNeighborProperties();

	void setNeighborProperties(List<Property> neighborProperties);

	List<Parcel> getRequestedParcels();

	void setRequestedParcels(List<Parcel> requestedParcels);

	List<Parcel> getNeighborParcels();

	void setNeighborParcels(List<Parcel> neighborParcels);

	void onPropertyClick(ActionEvent ae);

	long getFieldTabCounter();

	List<SelectItem> getSiRequestedParcels();

	boolean isEditing();

	String getSelectedParcelText();

	String parcelText(IParcel p);

	String reRenderList(boolean includeTransactionCnts);

	@Destroy
	@Remove
	void destroy();

}
